// miniprogram/pages/chatroom/chatroom.js
const db = wx.cloud.database()
const chatroomCollection = db.collection('chatroom')

Page({

  /**
   * 页面的初始数据
   */
  data: {
    userInfo: null, // 存储当前用户的信息
    textInputValue: '', //发送的消息
    chats: [], // 存储聊天记录
    openId: '', //当前用户openid
    expertsname:''
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // 用户是否对小程序授权
    wx.setNavigationBarTitle({title: options.name})

    console.log(options.name)
    wx.getSetting({
      success: res => {
        if (res.authSetting['scope.userInfo']) {
          wx.getUserInfo({
            success: res => {
              this.setData({
              
                userInfo: res.userInfo
              })
            }
          })
        }
      }
    })
    
    
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  async onReady() {
    chatroomCollection.where({
      groupId: 'group1'
    }).watch({
      onChange: this.onChange.bind(this),
      onError(err) {
        console.error(err)
      }
    })

    // 获取用户openid
    const {result} = await wx.cloud.callFunction({
      name: 'logins'
    })
    this.setData({
      openId: result.openid
    })
  },

  onChange(snapshot) {
    // 监听
    console.log(snapshot)
    if (snapshot.type == 'init') { // 初始化
      this.setData({
        chats: [
          ...this.data.chats,
          ...[...snapshot.docs].sort((x, y) => x.sendTimeTs - y.sendTimeTs)
        ]
      })
    } else {
      const chats = [...this.data.chats]
      for (const docChange of snapshot.docChanges) {
        switch (docChange.queueType) {
          case 'enqueue':
            chats.push(docChange.doc)
            break
        }
      }
      this.setData({
        chats: chats.sort((x, y) => x.sendTimeTs - y.sendTimeTs)
      })

    }

  },

  onGetUserInfo(e) {
    // 获取用户头像和昵称
    // console.log(e)
    if (e.detail.userInfo) {
      this.setData({
        userInfo: e.detail.userInfo
      })
      console.log(e.detail.userInfo);
      
    }
  },

  onSend() {
    // 发送消息，插入云数据库
    if (!this.data.textInputValue) {
      return
    }

    const doc = {
      textContent: this.data.textInputValue, // 用户输入信息
      avatar: this.data.userInfo.avatarUrl, // 头像
      nickName: this.data.userInfo.nickName, //  昵称
      groupId: 'group1',
      msgType: 'text',
      sendTime: new Date(),
      sendTimeTs: Date.now(),
    }

    chatroomCollection.add({
      data: doc
    })

    // 清空输入框
    this.setData({
      textInputValue: ''
    })

  },

  onTextInput(e) {
    // 获取用户输入的信息
    this.setData({
      textInputValue: e.detail.value
    })
    console.log(e.detail.value);
    
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})